package omm.domain.comparativegraph;

import java.util.Map;
import omm.domain.CommissionStrategy;

public class PieGraphicStrategy extends GraphicStrategy {
	private String urlPieFormat = "http://chart.apis.google.com/chart?chs=554x200" + /*360x130*/
			"&amp;chd=t:%s" + //Porcentajes separados por comas
			"&amp;cht=p3&amp;chdl=%s" + //Descripcion de cada porcentaje
			"&amp;chco=00008B,A9A9A9,7371c4,F0F8FF"; 
	
	/**
	 * Devuelve una cadena de descripcion - porcentaje
	 * @param percentages Map de descripcion - porcentaje
	 * @return cadena de descripcion con su porcentaje respectivo
	 */
	private String calculateNames(Map<String, Integer> percentages) {
		String percentagesStr = "";
		for (Map.Entry<String, Integer> e : percentages.entrySet()) {
			percentagesStr = percentagesStr + e.getKey()+'(' +e.getValue()+"%)" + '|';
		}

		return percentagesStr.substring(0, percentagesStr.length() - 1);
	}

	
	/**
	 * Devuelve la URL del grafico armada
	 * @param data Map de descripcion - suma de aoncommission
	 * @param commissionStrategy Estrategia que debe cumplir la comision
	 * @return Url del grafico
	 */
	@Override
	public String getGraphicURL(Map<String, Double> data, CommissionStrategy commissionStrategy) {
		Map<String, Integer> percentages = calculatePercentages(data);
		String strPercentages = percentagesToString(percentages);
		String namesWithPercent = calculateNames(percentages);
		
		Object[] params = { strPercentages, namesWithPercent };

		return String.format(urlPieFormat, params);
	}

}
